package com.liujit.pay.wx.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @description: 错误码
 * @author: liujun
 * @create: 2021/2/19 2:27 下午
 **/
@Getter
@AllArgsConstructor
public enum ReturnCode {

    /**
     * 交易错误
     */
    TRADE_ERROR("TRADE_ERROR", "交易错误"),

    /**
     * 系统错误
     */
    SYSTEMERROR("SYSTEM_ERROR", "系统错误"),

    /**
     * 签名错误
     */
    SIGN_ERROR("SIGN_ERROR", "签名错误"),

    /**
     * 业务规则限制
     */
    RULELIMIT("RULE_LIMIT", "业务规则限制"),

    /**
     * 参数错误
     */
    PARAM_ERROR("PARAM_ERROR", "参数错误"),

    /**
     * 商户订单号重复
     */
    OUT_TRADE_NO_USED("OUT_TRADE_NO_USED", "商户订单号重复"),

    /**
     * 订单不存在
     */
    ORDERNOTEXIST("ORDER_NOT_EXIST", "订单不存在"),

    /**
     * 订单已关闭
     */
    ORDER_CLOSED("ORDER_CLOSED", "订单已关闭"),

    /**
     * openid和appid不匹配
     */
    OPENID_MISMATCH("OPENID_MISMATCH", "openid和appid不匹配"),

    /**
     * 余额不足
     */
    NOTENOUGH("NOT_ENOUGH", "余额不足"),

    /**
     * 商户无权限
     */
    NOAUTH("NO_AUTH", "商户无权限"),

    /**
     * 商户号不存在
     */
    MCH_NOT_EXISTS("MCH_NOT_EXISTS", "商户号不存在"),

    /**
     * 订单号非法
     */
    INVALID_TRANSACTIONID("INVALID_TRANSACTION_ID", "订单号非法"),

    /**
     * 无效请求
     */
    INVALID_REQUEST("INVALID_REQUEST", "无效请求"),

    /**
     * 频率超限
     */
    FREQUENCY_LIMITED("FREQUENCY_LIMITED", "频率超限"),

    /**
     * 银行系统异常
     */
    BANKERROR("BANK_ERROR", "银行系统异常"),

    /**
     * appid和mch_id不匹配
     */
    APPID_MCHID_NOT_MATCH("APP_ID_MCH_ID_NOT_MATCH", "appid和mch_id不匹配"),

    /**
     * 签名错误
     */
    ACCOUNTERROR("ACCOUNT_ERROR", "账号异常");

    /**
     * 错误码
     */
    private String code;

    /**
     * 描述
     */
    private String message;

    public static ReturnCode getReturnCode(String code){
        for(ReturnCode returnCode : ReturnCode.values()){
            if(StrUtil.equals(code, returnCode.getCode())){
                return returnCode;
            }
        }
        return null;
    }
}
